package com.feihong.dubbo.model.util.transform;

import org.springframework.beans.BeanUtils;

/**
 * 对象转换工具，对BeanUtils.copyProperties进行再次封装
 * 只需传递源对象和目标生成对象的class，即可返回复制后的对象
 *
 * @author zhufeihong
 */
public class ObjectTransformUtil {

    /**
     * 根据targetClass实例化一个对象，把source的属性复制给新的对象后返回这个对象
     *
     * @param source      源实例对象
     * @param targetClass 目标对象的class
     * @return 复制后的一个新对象
     */
    public static <T, V> V copyProperties(T source, Class<V> targetClass) {
        V target = null;
        try {
            target = targetClass.newInstance();
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }
        BeanUtils.copyProperties(source, target);
        return target;
    }
}
